package co.gov.aerocivil.siga.registrarquejaservicioaerolinea.web;

import javax.ejb.EJB;
import javax.inject.Inject;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

import co.gov.aerocivil.siga.comun.bean.IMensaje;
import co.gov.aerocivil.siga.comun.excepcion.SistemaExcepcion;
import co.gov.aerocivil.siga.comun.servicio.auditoria.ILogError;
import co.gov.aerocivil.siga.registrarquejaservicioaerolinea.servicio.IMotorProcesoTramiteRegistrarQuejaAerolinea;
import co.gov.aerocivil.siga.registrarquejaservicioaerolinea.util.ConstantesValidacion;

/**
 * Listener para inicializar los proceso en el motor
 * @author odashton
 */
@WebListener
public class InicializadorTramite implements ServletContextListener {

	/**
	 * Constante que establece si se forza o no el despliegue del proceso, independientemente
	 * de su existencia en el motor de proceso
	 */
	private static final boolean IGNORAR = true;
	/** 
	 * Constante que representa la instancia del Log 
	 */
	private static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger(InicializadorTramite.class);
	/**
	 * Inyeccion EJB del servicio de MotorProcesoTramiteRegistrarQuejaAerolinea
	 */
	@EJB
	private IMotorProcesoTramiteRegistrarQuejaAerolinea motorProcesoTramiteRegistrarQuejaAerolinea;
	/**
	 * Inyección EJB del servicio transversal LogError
	 */
	@EJB
	private ILogError logError;
	/**
	 * Inyección CDI del bean de aplicación de Mensajes
	 */
	@Inject
	private IMensaje mensaje;
	
	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
	}

	@Override
	public void contextInitialized(ServletContextEvent arg0) {
		try{
			LOG.info( "Inicializando despliegue del tramite" );
			motorProcesoTramiteRegistrarQuejaAerolinea.desplegar( IGNORAR );
			LOG.info( "Finalizado despliegue del tramite" );
		} catch( RuntimeException re ){
			logError.log( mensaje.obtenerMensaje( ConstantesValidacion.ERROR_SISTEMA_INICIO_REGISTRAR_QUEJA ) + " [" + re.getMessage() + "]", re ,LOG );
			throw new SistemaExcepcion( mensaje.obtenerMensaje( ConstantesValidacion.ERROR_SISTEMA_INICIO_REGISTRAR_QUEJA ), re);
		}
	}

}